package iks.event
{
	import iks.render.anim.*;
	import flash.events.*;
	
	/**
	 * 动画播放事件
	 * @author StefanieKaka
	 */
	public class KAnimatorEvent extends Event
	{
		/**
		 * 更新帧事件
		 * 而 KAnimatorEvent.renderFrame 得到是当前正在渲染的帧.
		 * 
		 * PS: 尽量不要在这个事件的侦听函数中去 pause() 其他的动画, 
		 * 因为被 pause() 的这个动画可能还没有被渲染, 从而 pause() 的时候还停在上一帧.
		 * 造成这个问题的原因是 ENTER_FRAME 事件是有先后顺序的, 被 pause() 的动画还没来得及渲染就给先渲染的动画给 pause() 了, 从而帧数据没有更新.
		 */
		public static const UPDATE_FRAME		: String = "UpdateFrame";
		
		/**
		 * 动画播放结束事件, 在侦听函数调用 IKAnimator.getCurrentFrame() 得到的是当前渲染帧, 也是最后一帧
		 */
		public static const PLAY_END			: String = "PlayEnd";
		
		/**
		 * 渲染事件, 派发此事件的时候表明当前的动画已经重新渲染, 更换了新的渲染帧
		 * 这与 UPDATE_FRAME 事件不同, 因为可能在 pause 或者 gotoAndStop 等函数中会派发此事件
		 */
		public static const RENDER_FRAME		: String = "RenderFrame";
		
		/**
		 * 动画事件对象
		 * @param	type 事件类型
		 */
		public function KAnimatorEvent(type : String, renderFrame : int)
		{
			super(type);
			m_renderFrame = renderFrame;
		}
		
		/**
		 * 当前渲染的帧
		 */
		public function get renderFrame() : int
		{
			return m_renderFrame;
		}
		
		public override function clone() : Event
		{
			return new KAnimatorEvent(type, m_renderFrame);
		}
		
		private var m_renderFrame : int = 0;
		
	}

}

































///////////////////////////////////////////////////////////////////////////////////////////////////
// end file


